package bishi2016;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.Scanner;

public class Meituan_DiacardOddPosition {

	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		int number = 0;
		while(scanner.hasNext()){
			number = scanner.nextInt();
		    findLastLeft(number);	 
		}
		scanner.close();
	}
	public static void findLastLeft(int number){
		ArrayList<Integer> list = new ArrayList<Integer>();
		for (int i = 0; i <= number; i++) {
			list.add(i);
		}
		Iterator<Integer> iterator;
		int i = 1;
		while(list.size() > 1){
			i = 1;
			iterator = list.iterator();
			while(iterator.hasNext()){
				iterator.next();
//				System.out.println(" the item : "+ iterator.next());
				if((i & 1 )!= 0){
					iterator.remove();
				}
				i++;
			}
			System.out.println(list);
		}
		System.out.println(list.get(0));
	}
	//因为是从0开始，所以第一轮移走的是二进制下最右边为0的位置（从0开始的偶数位置）上的数，然后我们发现第二轮各个number的位置
	//等于number/2，即从number位置到number>>1位置，这时候我们依然移走二进制下最右边为0的位置（1(01)  5(101) 9(1001) ……
	//它们第二轮对应的位置是0， 2， 4），
    //最后剩一个数肯定是0到n中二进制下1最多的那个数，因为它每次的位置都是奇数位置。代码如下
	//http://www.nowcoder.com/test/question/done?tid=4943318&qid=26166#summary
}
